package twopoint;

public class 删除有序数组中的重复项_26 {
    public int removeDuplicates(int[] nums) {
        int p = 0, q = 1;// p -> 被比较的值 p位置是已经修改完成的 下一位来填入新值
        while (q < nums.length) {
            if (nums[p] == nums[q]) {// 相等则后移q
                q++;
            } else {
                if (q - p > 1) {  // 优化 ： 相差一位以上才复制
                    // https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/shuang-zhi-zhen-shan-chu-zhong-fu-xiang-dai-you-hu/
                    nums[p + 1] = nums[q];// 否则p后移且下一位等于新的q值 并且后移q
                }
                p++;
                q++;


            }
        }
        return p + 1;  // 返回长度而不是下标  应该加一

    }
}
